package com.lyf.spring.demo;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("/request")
public class RequestController {
    @RequestMapping("/r1")
    public  String r1(String keyword){
        return  "接收参数:" +keyword;
    }

    @RequestMapping("/r2")
    public  String r2(String username,String password){
        return  "接收参数: username:" +username+"password:"+password;
    }

    @RequestMapping("/r5")
    public  String r5(UserInfo userInfo){
        return  "接收参数: userInfo="+userInfo.toString();
    }


    @RequestMapping("/r6")
    //@RequestParam(value = "q")这个q是必存参数，如果置为false就可以了，不然后面的名字没用

    public  String r6(@RequestParam(value = "q",required = false)String keywork){
        return  "接收参数:keywork="+keywork;
    }

    @RequestMapping("/r7")
    //@RequestParam(value = "q")这个q是必存参数，如果置为false就可以了，不然后面的名字没用
    public  String r7(String[] arr){
        return  "接收参数:arr"+arr;
    }
    //在postman里面，写一个arr参数后面跟一个值，写多个证明这数组有多个arr参数，比如
    //arr  1
    //arr  2
    //arr  3   arr[]={1,2,3}
    //第二种是,号分割
    //arr 1，2，3


    //传递集合
    @RequestMapping("/r8")
    public  String r8(@RequestParam List<Integer> list) {
        return  "接收参数:list"+list;
    }

    //传递json
    @RequestMapping("/r9")//@RequestBody表示要接收一个json对象
    public  String r9(@RequestBody UserInfo userInfo) {
        System.out.println(userInfo.getName());
        return  userInfo.toString();
    }

    //从url中获取参数
    @RequestMapping("/artucle/{articleId}")
    //@PathVariable表示取路径变量，符合上面路径的可以
    // {articleId}表示下面articleId的值
    public String r10(@PathVariable Integer articleId){
        return "获取文章ID:"+articleId;
    }

    //路径变量可以表示多个
    @RequestMapping("/artucle1/{type}/{articleId}")
    //@PathVariable("{...}")//可以对上面的路径变量...进行重命名
    public String r11(@PathVariable Integer articleId,@PathVariable("type") String articletype){
        return "获取文章ID:"+articleId+"获取文章类型"+articletype;
    }


    //上传文件
    @RequestMapping("/r12")
    public String r12(MultipartFile file) throws IOException {
        System.out.println(file.getOriginalFilename());
        //文件上传

        file.transferTo(new File("D:\\fileShangChuan\\"+file.getOriginalFilename()));
        //文件上传到后面那个地方，
        return "文件获取成功";
    }

}
